package com.blacktech.dbu.core.dict;

/**
 * 字段类型枚举
 *
 * @author yanyunsong
 */
public enum ColumnType {
    // 字符串类型
    VARCHAR("VARCHAR"),
    CHAR("CHAR"),
    TEXT("TEXT"),
    
    // 数值类型
    INT("INT"),
    INTEGER("INTEGER"),
    BIGINT("BIGINT"),
    DECIMAL("DECIMAL"),
    NUMERIC("NUMERIC"),
    
    // 日期时间类型
    DATE("DATE"),
    DATETIME("DATETIME"),
    TIMESTAMP("TIMESTAMP"),
    
    // 其他类型
    BOOLEAN("BOOLEAN");

    private final String genericType;

    ColumnType(String genericType) {
        this.genericType = genericType;
    }
    
    /**
     * 根据数据库方言获取对应的字段类型
     * @param dialect 数据库方言
     * @return 对应数据库的字段类型
     */
    public String getTypeForDialect(DatabaseDialect dialect) {
        // 从配置类获取类型映射
        return DbTypeMappingConfig.getTypeMapping(this, dialect);
    }

    public String getGenericType() {
        return genericType;
    }
}